<?php

namespace Shared\Extensions\Twig;

/**
 * Description of Img
 *
 * @author nofear
 */
class Img extends \Twig_Extension {
    
    public function getFunctions() {
        return array(
            'img' => new \Twig_Function_Method($this, 'createImgTag'),
            'getSOGI' => new \Twig_Function_Method($this, 'getSOGI'),
        );
//        return array(
//            'createImgTag' => new \Twig_Function_Method($this, 'createImgTag')
//        );
    }

//    public function createImgTag($SiteObject, array $options = array()) {
//        if ($SiteObject->getId()) {
//            $defaults = array(
//                'crop' => false,
//                'src' => false,
//                'force' => false
//            );
//
//            $options = array_merge($defaults, $options);
//
//            $EntityManager = \Shared\Application::getInstance()->getEntityManager();
//
//            $Repository = $EntityManager->getRepository('Shared\Main\SiteObject');
//
//            $SOGI = $Repository->getSOGI($SiteObject, $options['force']);
//
//            $Picture = $SOGI ? $SOGI->getFile() : null;
//
//            if ($Picture) {
//                $defaults = array(
//                    'width' => $Picture->getWidth(),
//                    'height' => $Picture->getHeight(),
//                );
//
//                $options = array_merge($defaults, $options);
//
//                $path = '/img/img' . $Picture->getId() . '_w' . $options['width'];
//
//                if ($options['height']) {
//                    $path .= '_h' . $options['height'];
//                }
//
//                if ($options['crop']) {
//                    $path .= '_' . $options['crop'];
//                }
//
//                $path .= '.jpg';
//
//                if ($options['src']) {
//                    return $path;
//                }
//
//                $tag = '<img src="' . \Shared\Application::getInstance()->getDir() . '/resources' . $path . '" alt="" />';
//
//                return $tag;
//            }
//        }
//    }
    public function getSOGI($SO) {
        $EntityManager = \Shared\Application::getInstance()->getEntityManager();

        $Repository = $EntityManager->getRepository('Shared\Main\SiteObject');

        $SOGI = $Repository->getSOGI($SO);
        
//         if (!$SOGI->getFile()) {
//             
//            \Doctrine\Common\Util\Debug::dump($SO);
//            exit;
//         }
        
        return $SOGI;
    }

    public function createImgTag($SOGI, array $options = array()) {
        if ($SOGI && !($SOGI instanceof \Shared\Multimedia\SiteObjectGalleryItem)) {

            $EntityManager = \Shared\Application::getInstance()->getEntityManager();

            $Repository = $EntityManager->getRepository('Shared\Main\SiteObject');

            $SOGI = $Repository->getSOGI($SOGI);
        }

        if ($SOGI && $SOGI instanceof \Shared\Multimedia\SiteObjectGalleryItem) {
            $Picture = $SOGI ? $SOGI->getFile() : null;

            if ($Picture) {
                $defaults = array(
                    'crop' => false,
                    'src' => false,
                    'width' => $Picture->getWidth(),
                    'height' => $Picture->getHeight(),
                );

                $options = array_merge($defaults, $options);

                $path = \Shared\Application::getInstance()->getDir() . '/resources/img/img' . $Picture->getId() . '_w' . $options['width'];

                if ($options['height']) {
                    $path .= '_h' . $options['height'];
                }

                if ($options['crop']) {
                    $path .= '_' . $options['crop'];
                }

                $path .= '.jpg';

                if ($options['src']) {
                    return $path;
                }

                $tag = '<img src="' . $path . '" alt="" />';

                return $tag;
            }
        }
    }

    public function getName() {
        return 'img';
    }

}
